// @strict-types

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
    //@skip-check property-return-type - Произвольное значение
    ЗначениеСтрокой = ЗначениеВСтрокуXML(Параметры.Значение);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ПрименитьЗначение(Команда)
	
	ПолученноеЗначение = ЗначениеИзСтрокиXML(ЗначениеСтрокой);
	Закрыть(Новый Структура("ЗначениеРеквизита", ПолученноеЗначение));
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
 
// Преобразует (сериализует) любое значение в XML-строку.
// Преобразованы в могут быть только те объекты, для которых в синтакс-помощнике указано, что они сериализуются.
// См. также ЗначениеИзСтрокиXML.
//
// Параметры:
//  Значение - Произвольный - значение, которое необходимо сериализовать в XML-строку.
//
// Возвращаемое значение:
//  Строка - XML-строка.
//
&НаКлиентеНаСервереБезКонтекста
Функция ЗначениеВСтрокуXML(Значение)
	
	#Если ВебКлиент Тогда
		
		ВызватьИсключение "Метод недоступен в веб-клиенте";
		
	#Иначе
		
		ЗаписьXML = Новый ЗаписьXML;
		ЗаписьXML.УстановитьСтроку();
		СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение, НазначениеТипаXML.Явное);
		
		Возврат ЗаписьXML.Закрыть();
		
	#КонецЕсли
	
КонецФункции

// Выполняет преобразование (десериализацию) XML-строки в значение.
// См. также ЗначениеВСтрокуXML.
//
// Параметры:
//  СтрокаXML - Строка - XML-строка, с сериализованным объектом..
//
// Возвращаемое значение:
//  Произвольный - значение, полученное из переданной XML-строки.
//
&НаКлиентеНаСервереБезКонтекста
Функция ЗначениеИзСтрокиXML(СтрокаXML)
	
	#Если ВебКлиент Тогда
		
		ВызватьИсключение "Метод недоступен в веб-клиенте";
		
	#Иначе
		
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.УстановитьСтроку(СтрокаXML);
		
		Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
		
	#КонецЕсли
	
КонецФункции

#КонецОбласти
